package com.xingyun.kingdee.erp.common.model.api;

import com.alibaba.fastjson.JSONObject;
import com.xingyun.kingdee.erp.common.model.param.base.ErpLoginParam;
import com.xingyun.kingdee.erp.common.model.param.opt.*;
import com.xingyun.kingdee.erp.common.model.response.Result;

import javax.validation.Valid;
import java.util.List;

/**
 * @author lingo
 * @version v1.0
 * @date 2020/8/11 16:19
 * @Company www.xyb2b.com
 */

public interface ErpApi {

    /**
     * 保存、修改表单
     *
     * @param erpSaveParam 请求实体
     * @return 保存结果
     * @author zhangxiong
     * @date 2020年04月02日
     */
    
    Result<JSONObject> save(@Valid ErpSaveFormParam erpSaveParam);

    /**
     * 单据查询
     *
     * @param erpBillQueryParam 请求实体
     * @return 单据查询结果
     * @author zhangxiong
     * @date 2020年04月03日
     */
    
    Result<Object> billQuery(@Valid ErpBillQueryParam erpBillQueryParam);

    /**
     * 审核单据
     *
     * @param erpAuditParam 请求实体
     * @return 审核结果
     * @author zhangxiong
     * @date 2020年04月03日
     */
    
    Result<JSONObject> audit(@Valid ErpAuditParam erpAuditParam);

    /**
     * 反审核单据
     *
     * @param erpUnAuditParam 请求实体
     * @return 反审核结果
     * @author zhangxiong
     * @date 2020年04月03日
     */
    
    Result<JSONObject> unAudit(@Valid ErpUnAuditParam erpUnAuditParam);

    /**
     * 提交单据
     *
     * @param erpSubmitParam 请求实体
     * @return 提交结果
     * @author zhangxiong
     * @date 2020年04月03日
     */
    
    Result<JSONObject> submit(@Valid ErpSubmitParam erpSubmitParam);

    /**
     * 查看单据
     *
     * @param erpViewParam 请求实体
     * @return 查看单据详情结果
     * @author zhangxiong
     * @date 2020年04月03日
     */
    
    Result<JSONObject> view(@Valid ErpViewParam erpViewParam);

    /**
     * 删除单据
     *
     * @param erpDeleteParam 请求实体
     * @return 删除结果
     * @author zhangxiong
     * @date 2020年04月03日
     */
    
    Result<JSONObject> delete(@Valid ErpDeleteParam erpDeleteParam);

    /**
     * 下推单据
     *
     * @param erpPushParam 请求实体
     * @return 下推结果
     * @author zhangxiong
     * @date 2020年04月03日
     */
    
    Result<JSONObject> push(@Valid ErpPushDownParam erpPushParam);


    /**
     * 登录erp，获取cookie，每次登录均会访问 erp，如成功则刷新服务缓存的cookie
     * @param erpLoginParam
     * @return 成功则返回内容，否则返回错误
     */
    
    Result<List<String>> loginToGetCookie(@Valid ErpLoginParam erpLoginParam);
}
